import Vue from 'vue'
import Vuex from 'vuex'
// import axios from '@/config/http';
import { getUserMenus } from '@/config/api';

import { state_1, action_1, mutations_1 } from './a';
Vue.use(Vuex);

let token = sessionStorage.getItem('token')
let userInfo = sessionStorage.getItem('userInfo')
import b from "./b"

export default new Vuex.Store({

  modules: {
    'first': b,  // 直接合并一个子仓库对象。
    'second': {
      namespaced: true,
    },
    'three': {
      namespaced: true,
      state: {
        token: token ? token : '',
        userInfo: userInfo ? JSON.parse(userInfo) : '',
        menus: [],
        ...state_1, // 使用展开运算符，解构对象。
      },
      getters: {
        getUserName(state) {
          return state.userInfo.adminName + ',女士';
        }
      },
      mutations: {
        ...mutations_1,
        userInfoMt(state, payload) {
          state.userInfo = payload;
        },
        tokenMt(state, payload) {
          state.token = payload
        },
        menuMt(state, payload) {
          state.menus = payload;
        }
      },
      actions: {
        ...action_1,
        // action中可以做异步的操作，比如调接口。
        // 但是不建议都在里面写接口调用的代码。
        // {commit},简化版的store对象，包含了commit()
        userInfoAc({ commit }, payload) {
          commit('userInfoMt', payload)
        },
        tokenAc({ commit }, payload) {
          commit('tokenMt', payload)
        },
        // actions实现异步逻辑，修改state.
        getMenes({ commit }) {
          getUserMenus()
            .then(res => {
              if (res.code === 200) {
                commit('menuMt', res.data)
              }
            })
            .catch(err => {
              console.log(err)
            })
        }

      },
    }
  },



});